﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Persistente;

namespace Persistente.SubtipoProduto
{
    public class PSubtipoProduto
    {

        private DB_SIMETRIA _db;
        private SqlConnection _conexao = new SqlConnection(ConfigurationManager.ConnectionStrings["DB_SIMETRIA_SQL"].ConnectionString);
        public bool Salvar(int idSubtipoProduto, string nmSubtipoProduto, string dsSubtipoProduto, int idTipoProduto)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var tbSubtipoProduto = new tb_subtipo_produto();
                tbSubtipoProduto.id_subtipo_produto = idSubtipoProduto;
                tbSubtipoProduto.nm_subtipo_produto = nmSubtipoProduto;
                tbSubtipoProduto.ds_subtipo_produto = dsSubtipoProduto;
                tbSubtipoProduto.id_tipo_produto = idTipoProduto;
                _db.AddTotb_subtipo_produto(tbSubtipoProduto);
                _db.SaveChanges();

                return true;

            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                _db.Connection.Close();
            }

        }

        public DataSet pegarSubtiposProduto(int idTipoProduto = 0, string nmSubtipoProduto = null, string dsSubtipoProduto = null)
        {

            var ds = new DataSet();

            string query = "SELECT ";
            query += " nm_subtipo_produto";
            query += ", id_subtipo_produto";
            query += ", ds_subtipo_produto";
            query += ", stp.id_tipo_produto";
            query += ", tp.nm_tipo_produto";
            query += " FROM tb_subtipo_produto stp,";
            query += "tb_tipo_produto tp";

            query += " WHERE stp.id_tipo_produto = tp.id_tipo_produto";

            if (idTipoProduto != 0)
            {
                query += " AND stp.id_tipo_produto =" + idTipoProduto;
            }
            if (!string.IsNullOrEmpty(nmSubtipoProduto))
            {
                query += " AND nm_subtipo_produto LIKE '%" + nmSubtipoProduto + "%'";
            } if (!string.IsNullOrEmpty(dsSubtipoProduto))
            {
                query += " AND te_email LIKE '%" + dsSubtipoProduto + "%'";
            }

            var cmd = new SqlCommand(query, _conexao);

            cmd.Connection = _conexao;

            if (_conexao.State == ConnectionState.Closed)
            {
                _conexao.Open();
            }

            var dataAdapter = new SqlDataAdapter(cmd);
            dataAdapter.Fill(ds);

            _conexao.Close();

            return ds;
        }

        public bool Remover(int idSubtipoProduto)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var obTbSubtipoProduto = _db.tb_subtipo_produto.Where(q => q.id_subtipo_produto == idSubtipoProduto).FirstOrDefault();
                if (obTbSubtipoProduto == null)
                {
                    return false;
                }
                else
                {
                    _db.tb_subtipo_produto.DeleteObject(obTbSubtipoProduto);
                    _db.SaveChanges();
                    return true;
                }

            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public tb_subtipo_produto pegarSubtipoProdutoPorId(int idSubtipoProduto)
        {
            try
            {
                _db = new DB_SIMETRIA();
                return _db.tb_subtipo_produto.Where(q => q.id_subtipo_produto == idSubtipoProduto).FirstOrDefault();
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                _db.Connection.Close();
            }
        }

        public bool Alterar(int idSubtipoProduto, tb_subtipo_produto obTbSubtipoProdutoNovo)
        {
            try
            {
                _db = new DB_SIMETRIA();
                var obTbSubtipoProdutoVelho =
                    _db.tb_subtipo_produto.Where(q => q.id_subtipo_produto == idSubtipoProduto).FirstOrDefault();

                obTbSubtipoProdutoVelho.nm_subtipo_produto = obTbSubtipoProdutoNovo.nm_subtipo_produto;
                obTbSubtipoProdutoVelho.ds_subtipo_produto = obTbSubtipoProdutoNovo.ds_subtipo_produto;
                obTbSubtipoProdutoVelho.nm_subtipo_produto = obTbSubtipoProdutoNovo.nm_subtipo_produto;
                

                _db.SaveChanges();
                return true;
            }
            catch (Exception e)
            {
                return false;
            }
            finally
            {
                _db.Connection.Close();
            }
        }
    }
}
